format 8

bind
a1	0.0269163
a2	0.0269163
b1	0.00672908
b2	0.00672908
lambda11	1.5058
lambda21	1.5058
lambda12	0.00301161
lambda22	0.00301161
r1	5
r2	5
mu1	2.73
mu2	2.73
K1	16
K2	16
e	0.0001
end

*REWARD Functions
func	Qlen1() #(buf1)+(#(Er_token1)+#(Er_stage1))/r1

func	Earrival()
if (#(mmpp_2)<> 0)
bind ret_val lambda21
else
bind ret_val lambda22
end
if (#(Er_token1)==1)
bind ret_val ret_val+r1/mu1
end
ret_val
end

func	Qlen2() #(buf2)+(#(Er_token2)+#(Er_stage2))/r1

func	ELR()
if ((Qlen2()+e)>=K2)
if (#(mmpp_2)<>0)
bind ret_val lambda21
else
bind ret_val lambda22
end
if (#(Er_token1)==1)
bind ret_val ret_val+r1/mu1
end
ret_val
else
0
end
end

func	PFull()
if (Qlen2()+e)>=K2
1.0
else
0
end
end

* GUARD Functions
func	gar2()
if (Qlen2()+e)<K2
1
else
0
end
end

func	gar1()
if ((Qlen1()+e)<K1)
1
else
0
end
end

* RATE Functions
func	REr1() r1/mu1

func	Rar1()
if (#(mmpp_1)>0)
lambda11
else
lambda12
end
end

func	REr2() r2/mu2

func	Rar2()
if (#(mmpp_2)>0)
lambda21
else
lambda22
end
end

* CARDINALITY Functions
func	R2() r2

func	dep12()
if ((K2-Qlen2()+e)<1)
0
else
1
end
end

func	R1() r1

srn example6()
* Places
mmpp_1	1
mmpp_2	1
buf1	0
Er_token1	0
Er_stage1	0
buf2	0
Er_token2	0
Er_stage2	0
end
* Timed Transitions
t2_1	ind	b1
t2_2	ind	b2
t1_1	ind	a1
t1_2	ind	a2
tar1	gendep	Rar1()	guard	gar1()
Er_trans1	ind	REr1()
tar2	gendep	Rar2()	guard	gar2()
Er_trans2	ind	REr2()
end
* Immediate Transitions
Er_in1	ind	1.	priority	20
Er_out1	ind	1.	priority	20
Er_in2	ind	1.	priority	20
Er_out2	ind	1.	priority	20
end
* Input arcs
mmpp_1	t1_1	1
mmpp_2	t1_2	1
buf1	Er_in1	1
Er_token1	Er_trans1	1
Er_stage1	Er_out1		R1()
buf2	Er_in2	1
Er_token2	Er_trans2	1
Er_stage2	Er_out2		R2()
end
* Output arcs
t2_1	mmpp_1	1
t2_2	mmpp_2	1
tar1	buf1	1
Er_in1		Er_token1	R1()
Er_trans1	Er_stage1	1
Er_out1	buf2	dep12()
tar2	buf2	1
Er_in2		Er_token2	R2()
Er_trans2	Er_stage2	1
end
* Inhibitor arcs
mmpp_1	t2_1	1
mmpp_2	t2_2	1
Er_token1	Er_in1	1
Er_stage1	Er_in1	1
Er_token2	Er_in2	1
Er_stage2	Er_in2	1
end

expr srn_exrt(5, example6; Qlen1)

end


